J'ai un tableau statsname comme Pomme X banane Oui kiwi z J'ai besoin de mettre la pomme, la banane et le kiwi dans un tableau Fruits et X, Y et Z dans un tableau appelé alphabets. Un mécanisme C # simple pour cela s'il vous plaît?
Utilisez la surcharge IEnumerable.Where qui fournit l'index. var fruits = statsname.Where ((s, i) => i% 2 == 0) .ToArray (); var alphabets = statsname.Where ((s, i) => i% 2! = 0) .ToArray (); | Volé dans Comment obtenir des éléments alternatifs à l'aide de Enumerable en C # var fruits = myArray.Where ((t, i) => i% 2 == 0) .ToArray (); var alphabets = myArray.Where ((t, i) => i% 2 == 1) .ToArray (); | Si j'ai bien compris, vous vous interrogez correctement sur ce que vous voulez, c'est très simple: Vous voulez mettre des fruits dans un tableau de fruits et de même pour les alphabets et ils apparaissent alternativement dans le tableau statsname ainsi: pour (int i = 0, j = 0; i liste = nouvelle Liste () {"pomme", "X", "banane", "Y", "Kiwi", "z"}; var result = list.Select ((l, i) => new {l, i}) .GroupBy (p => p.i% 2) .Select (x => x.Select (v => v.l) .ToList ()) .Lister(); Ensuite, vous avez une liste de listes: | list fruits = new List (); list alphabet = new List (); pour (int i = 0; i everyOther (collection IEnumerable ) { en utilisant (var e = collection.GetEnumerator ()) { while (e.MoveNext ()) { rendement retour e.Current; e.MoveNext (); // en sauter un } } } Vous pouvez utiliser System.Linq.Skip pour ignorer le premier élément. string [] words = "pomme X banane Y Kiwi z" .Split (); var fruits = tous les autres (mots); var alphabets = everyOther (words.Skip (1)); Utilisez-les simplement comme une nouvelle collection ou appelez .ToArray () ou .ToList () sur eux: foreach (chaîne f dans les fruits) Console.WriteLine (f); string [] anArray = fruits.ToArray (); // en utilisant System.Linq Vous avez maintenant ce dont vous avez besoin. Les itérateurs sont des méthodes qui donnent un retour, voir Itérateurs (Guide de programmation C #). C'est une caractéristique très forte de la langue. Vous pouvez: sauter des éléments décorer des éléments modifier la commande concaténer des séquences (voir System.Linq.Concat) ... | Voici un code de travail, j'espère que cela vous sera utile: en utilisant le système; using System.Collections.Generic; en utilisant System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; espace de noms ReadFile { programme de classe { static void ReadFile (chaîne filePath, List custumerNames, List phoneNumbers) { string line = string.Empty; var fileStream = new StreamReader (filePath); booléen isPhoneNumber = true; while ((ligne = fileStream.ReadLine ())! = null) { if (isPhoneNumber) { phoneNumbers.Add (Convert.ToInt32 (ligne)); isPhoneNumber = false; } autre { custumerNames.Add (ligne); isPhoneNumber = true; } } fileStream.Close (); } static void Main (string [] args) { Console.WriteLine ("A commencé la lecture du fichier ..."); Liste custumersNamesList = nouvelle liste (); List custumersPhonesNumbers = new List (); ReadFile ("SampleFile.txt", custumersNamesList, custumersPhonesNumbers); // En supposant que les deux listes ont la même longueur. pour (int i = 0; i